#ifndef TERRAIN_FILE_LOADER_H
#define TERRAIN_FILE_LOADER_H

#include <memory>
#include <vector>
#include <string>
#include "DataException.h"
using namespace std;

namespace geom
{
	class TerrainModel;
}

namespace dataengine
{
	/** Generic class to load Terrain point clouds from files */
	class TerrainFileManager
	{
		protected:
			/** File to load the point cloud from */
			string m_filename;
		public:
			/** Constructor 
			  @param filename File to load the point cloud from */
			TerrainFileManager(string filename) : m_filename(filename){};
			/** Destructor */
			virtual ~TerrainFileManager() {};
			/** Checks if the file can be loaded with this class */
			virtual bool canLoadFile() = 0;
			/** Loads the file */
            virtual geom::TerrainModel loadFile() = 0;
	};
}
#endif
